package com.sungohealth.handler;

import com.sungohealth.rules.SleepRuleOwner;
import org.kie.api.runtime.KieSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 报告任务处理器
 *
 * @author :Liangzy (Potato)
 * @date: 2022-05-03 21:51
 */
@Component
public class ReportRuleTaskHandler {

    @Resource
    private SleepRuleOwner sleepRuleOwner;

    @Autowired
    private KieSession session;

    /**
     * 执行规则
     *
     * @return 返回是否执行成功
     */
    public boolean exec() {
        // 获取所有将要生成报告的人
        reportMock()
                .forEach(x -> {
                    // 是否为窦性心率用户
                    sleepRuleOwner.toBedLate(x);
                });

        // 执行完所有操作之后释放 working memory
        session.dispose();
        return true;
    }


    /**
     * 报告的 mock 数据,会返回一些人的 user_id
     *
     * <ol>
     *     mock 的规则
     *     <li>获取即将会员到期的人,帮这些用户生成阶段性总结报告</li>
     * </ol>
     */
    private List<String> reportMock() {
        return Stream.of(
                "1234",
                "155123",
                "21821",
                "11211",
                "89122"
        ).collect(Collectors.toList());
    }

}
